package com.yunxi.sys.service;

import com.github.pagehelper.PageInfo;
import com.yunxi.core.web.ApiResult;
import com.yunxi.core.web.LoginInfo;
import com.yunxi.sys.pojo.RoleVO;
import com.yunxi.sys.pojo.StaffListVO;
import com.yunxi.sys.pojo.StaffVO;
import com.yunxi.sys.pojo.UserVO;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

/**
 * <p>
 * 员工信息 服务类
 * </p>
 *
 * @author 
 * @since 2019-05-20
 */
public interface StaffDubboService {

    StaffVO getById(String id) throws InvocationTargetException, IllegalAccessException;

    ApiResult saveOrUpdate(StaffVO staffVO,LoginInfo loginInfo) throws Exception;

    ApiResult saveOrUpdate(List<StaffVO> staffVOList,LoginInfo loginInfo) throws Exception;

    void save(StaffVO staffVO) throws Exception;

    void removeById(String id) throws Exception;

    PageInfo<StaffVO> findPageByVO(StaffVO staffVO, Integer pageNum, Integer pageSize,LoginInfo loginInfo) throws InvocationTargetException, IllegalAccessException;

    void removeByListVo(List<StaffVO> staffVOList) throws IllegalAccessException, InvocationTargetException, InstantiationException;

    List<StaffListVO> getStaffListById(String orgId);

    List listByVO(StaffVO staffVO,LoginInfo loginInfo);

    StaffVO getByUser(UserVO user);

    StaffVO getCasById(String staffId);

    List<RoleVO> listRole(LoginInfo loginInfo);

    void batchCreateUser(String flag) throws InvocationTargetException, IllegalAccessException;

    List<StaffVO> listByPartnerCode(String partnerCode) throws InvocationTargetException, IllegalAccessException;

    List<StaffVO> listManagerByPartnerCode(String partnerCode) throws InvocationTargetException, IllegalAccessException;

   PageInfo listRegionManager(String areaCode,Integer pageNum, Integer pageSize);

    PageInfo listAllRegionManager(Integer pageNum, Integer pageSize);

    PageInfo listRegionManagerNotExits(String areaCode, Integer pageNum, Integer pageSize);

    ApiResult listStaffByRoleCode(String roleCode, LoginInfo loginInfo);

   String getBigRegionCode(String userCode);

   List<StaffVO> getRegionManagerByUserCode(String fellowId);

   ApiResult a(String provinceCode);

   PageInfo listAllCityManager(Integer pageNum, Integer pageSize);

   PageInfo listCityManagerNotExits(Integer pageNum, Integer pageSize);

   ApiResult saveCityManager(List<StaffVO> staffVOList, LoginInfo loginInfo) throws InvocationTargetException, IllegalAccessException;

   PageInfo listCityManagerByAccountNo(String accountNo, Integer pageNum, Integer pageSize);

   List<StaffVO> listRegionManagerByPartnerCode(String partnerCode, LoginInfo loginInfo);

   List<StaffVO> listCityManagerByPartnerCode(String partnerCode, LoginInfo loginInfo);

   List<StaffVO> listCityManagerByPartnerCode(String cityCode);

   ApiResult updateBatchTraining(List<StaffVO> staffVOList, LoginInfo loginInfo) throws IllegalAccessException;
}
